Для задания перспективы не обязательно пользоваться только командами основной библиотеки open32.lib. В комплект поставки OpenGL входит вспомогательная библиотека glu32.lib. Она имеет много хороших функций, которые упрощают жизнь, одна из таких функций - gluPerspective.
Возьмем предыдущий пример и немного исправим функцию OnDraw(...):
void CExampleView::OnDraw(CDC* pDC)
{
CRect clientRect;
CExampleDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
GetClientRect(&clientRect);
glViewport(0, 0, clientRect.right, clientRect.bottom);
glClearColor (0.5, 0.5, 0.75, 1.0);
glClear (GL_COLOR_BUFFER_BIT);
glColor3f (1.0, 0.0, 0.5);
glLoadIdentity();
gluPerspective(30.0f, clientRect.right/clientRect.bottom, 1.0f, 15.0f);
glTranslatef(0.0, 0.0, -10.0);
glRotatef(30.0, 1.0, 0.0, 0.0);
glRotatef(70.0, 0.0, 1.0, 0.0);
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
DrawCube();
SwapBuffers(pDC->m_hDC);
}
Вот собственно и все. Просто заменили функцию glFurstum на glPerspective.